package main

import (
	"fmt"
	"unicode"
)

func main() {
	var passwd string
	error1 := ""
	grade := 2
	fmt.Scan("输入密码：", &passwd)
	if check_len(passwd) {
		grade++
	} else {
		error1 += "密码长度不够."
	}
	if check_type(passwd) >= 3 {
		grade++
	} else {
		error1 += "未由三种以上字符组成."
	}
	if check_repet(passwd) {
		grade++
	} else {
		error1 += "存在重复字符串."
	}
	fmt.Println("分数:", grade, "\n不符合要求:", error1)
}

func check_len(str1 string) bool {
	if len(str1) > 8 {
		return true
	} else {
		fmt.Println("密码长度未超过8")
		return false
	}
}

func check_type(str2 string) int {
	num1, num2, num3, num4 := 0, 0, 0, 0
	for _, i := range str2 {
		if unicode.IsLower(i) {
			num1 = 1
		} else if unicode.IsUpper(i) {
			num2 = 1
		} else if unicode.IsDigit(i) {
			num3 = 1
		} else {
			num4 = 1
		}
	}
	return num1 + num2 + num3 + num4
}

func check_repet(str3 string) bool {
	for i, _ := range str3 {
		for j := i + 3; j < len(str3)-2; j++ {
			if str3[i:i+3] == str3[j:j+3] {
				return false
			}
		}
	}
	return true
}
